/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dp1.pucp.Ventas.Controlador;

import CharliesCookies.MainController;
import com.dp1.pucp.Ventas.DAO.PrecioDAO;
import com.dp1.pucp.Ventas.VIsta.MantPrecioGUI2;
import com.dp1.pucp.Ventas.VIsta.PrecioGUI;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import com.dp1.pucp.Modelo.Clases.Precio;
import com.dp1.pucp.Seguridad.DAO.LogDAO;
import com.dp1.pucp.Util.Validaciones;

/**
 *
 * @author ubuntu64
 */
public class MantPrecioControlador {

    private PrecioDAO dao;
    private MantPrecioGUI2 mantPrecioGUI;
    private ArrayList<String> listaVigencia;
    private ArrayList<Precio> listaPrecios;

    public MantPrecioControlador(PrecioDAO dao, MantPrecioGUI2 mantPrecioGUI) {

        this.dao = dao;
        this.mantPrecioGUI = mantPrecioGUI;

        this.mantPrecioGUI.addNuevoListener(new crearPrecioListener());
        this.mantPrecioGUI.addBuscarListener(new buscarPrecioListener());
        this.mantPrecioGUI.addEditarListener(new editarPrecioListener());
//      this.mantPrecioGUI.addEliminarListener(new eliminarPrecioListener());
        this.mantPrecioGUI.addLimpiarListener(new limpiarListener());

        this.llenaComboVigencia();
    }

    class crearPrecioListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {


            PrecioGUI p = new PrecioGUI(mantPrecioGUI.getPadre(), true);
            PrecioControlador c = new PrecioControlador(dao, p, null);
            LogDAO.insertarLog(MainController.usuario, "Ingresar Agregar Precio");
            
            p.setVisible(true);
        }
    }

    class buscarPrecioListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            String producto = mantPrecioGUI.getProducto();
            producto = producto.toUpperCase();
            int vigencia = mantPrecioGUI.getVigencia();

            ArrayList<Precio> auxiliar = dao.listarPrecios(vigencia);
            listaPrecios = new ArrayList<>();
            for (int i = 0; i < auxiliar.size(); i++) {
                if (auxiliar.get(i).getTipoproducto().getNombre().toUpperCase().contains(producto)) {
                    listaPrecios.add(auxiliar.get(i));
                }
            }
            mantPrecioGUI.llenaGrilla(listaPrecios);
        }
    }

    class editarPrecioListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            int indice = mantPrecioGUI.getFilaSel();
            if (indice != -1) {
                PrecioGUI precioGUI = new PrecioGUI(mantPrecioGUI.getPadre(), true);
                Precio precio = listaPrecios.get(indice);
                PrecioControlador c = new PrecioControlador(dao, precioGUI, precio);
                LogDAO.insertarLog(MainController.usuario, "Ingresar Editar Precio");
            
                precioGUI.setVisible(true);
            }
        }
    }

    class eliminarPrecioListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            Validaciones.mostrarMensajeErrorVal("No se pueden eliminar ningún precio actualmente");
        }
    }

    class limpiarListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            mantPrecioGUI.limpiar();

        }
    }

    public void llenaComboVigencia() {
        listaVigencia = dao.listarVigencias();
        mantPrecioGUI.llenaComboVigencia(listaVigencia);
    }
}
